/**
 * Esta clase representa una venta con cuenta corriente
 * realizada en una sucursal.
 */
package ventas;

import sucursal.Sucursal;
import clientes.Cliente;
import clientes.ListaDeCompras;
import exceptions.VentaYaAbonadaException;

/**
 * @author Lucas Alan Silvestri.
 *
 */
public abstract class VentaConCuentaCorriente extends Venta {

	/**
	 * Constructor de la clase.
	 * @param unaListaDeCompras es una lista con los productos
	 * que desea comprar el cliente.
	 * @param sucursalDondeSeRealizaLaVenta es la sucursal donde
	 * se realiza la venta.
	 * @param clienteQueDeseaRealizarLaCompra es el cliente
	 * quien quiere realizar la compra de productos.
	 */
	public VentaConCuentaCorriente(ListaDeCompras unaListaDeCompras,
			Sucursal sucursalDondeSeRealizaLaVenta,
			Cliente clienteQueDeseaRealizarLaCompra) {
		super(unaListaDeCompras, sucursalDondeSeRealizaLaVenta,
				clienteQueDeseaRealizarLaCompra);
	}

	/**
	 * @return si el cliente puede pagar los productos.
	 * @throws VentaYaAbonadaException 
	 */
	@Override
	protected abstract boolean elClientePuedePagarLosProductos() throws VentaYaAbonadaException;
	
	/**
	 * cobrara los productos al cliente.
	 * @throws VentaYaAbonadaException 
	 */
	@Override
	protected abstract void cobrarProductos() throws VentaYaAbonadaException;
}
